package com.situ.mall.collection;

import org.junit.jupiter.api.Test;


import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

public class CollectionDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("abc1");
        list.add("abc2");
        list.add("abc3");
        list.add("abc4");

        list.add(2, "Java");//List接口定义的方法
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String str = iterator.next();
            System.out.println(str);
        }
        System.out.println("--------------");
        //由于List集合拥有索引，因此List集合迭代方式除了使用迭代器之外，还可以使用索引进行迭代。
        for (int i = 0; i < list.size(); i++) {
            String str = list.get(i);
            System.out.println(str);
        }
        System.out.println("--------------");
        //迭代器的并发修改异常 java.util.ConcurrentModificationException
        //就是在遍历的过程中,使用了集合方法修改了集合的长度,不允许的
        //对集合使用迭代器进行获取,获取时候判断集合中是否存在 "abc3"对象
        //如果有,添加一个元素 "ABC3"
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String s = it.next();
            //对获取出的元素s,进行判断,是不是有"abc3"
            if(s.equals("abc3")){
                list.add("ABC3");
            }
            System.out.println(s);
        }
    }

    @Test
    public void ttt() {
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        /*for (String item : list) {
            if (item.equals("3")) {
                System.out.println(item);
                list.remove(item);
            }
        }*/
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String item = iterator.next();
            if (item.equals("3")) {
                System.out.println(item);
                iterator.remove();
            }
        }
        System.out.println(list.size());
    }


    @Test
    public void test2() {
        Collection<String> collection = new ArrayList<>();
        collection.add("张三");
        collection.add("李四");
        collection.add("王五");
        collection.add("张三");
        for (String str : collection) {
            System.out.println(str);
        }
        System.out.println("---------------");
        Iterator<String> iterator = collection.iterator();
        while (iterator.hasNext()) {//判断有没有下一个,有下一个返回true
            String data = iterator.next();//用来返回迭代的下一个元素，并把指针向后移动一位
            System.out.println(data);
        }

    }
}
